# -*- coding:utf-8 -*-
# 页面等待

# 显示等待
"""
- 每经过多少秒就查看一次等待条件是否达成，如果达成就停止等待，
继续执行后续代码
- 如果没有达成就继续等待直到超过规定的时间后，报超时异常

显式等待是你定义的代码，用于等待特定条件发生，
然后再继续执行代码。这种情况的极端情况是 time.sleep()，
它将条件设置为要等待的确切时间段。
提供了一些方便的方法来帮助您编写只等待所需时间的代码。
WebDriverWait 与 ExpectedCondition 结合使用是实现此目的的一种方式。

"""

from selenium import webdriver                               # 导入selenium浏览器驱动模块
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException      # 导入异常模块
from selenium.webdriver.support.ui import WebDriverWait      # 导入等待页面加载元素模块
from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Chrome()
driver.get("htps://www.baidu.com")

def search_element():
    try:
        input_data = WebDriverWait(driver, 10, 0.5).until(
            EC.presence_of_element_located((By.XPATH, ""))        # 定位的元素(By.XPATH, "")，一旦加载成功，就停止等待
        )
    except TimeoutException:         # 如果规定的十秒中内，没有加载完毕，就捕获异常，重新调用自己
        return search_element()


